package com.guit.hrms.service;

import com.guit.hrms.dto.recuitmentDTO.*;
import com.guit.hrms.po.recruitmentPO.FileEntity;
import com.guit.hrms.po.recruitmentPO.PlanDeptJob;
import com.guit.hrms.vo.recruitmentVO.RecruitmentVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface RecruitmentService {
    /**
     * 新增招聘公告
     *
     * @param recruitmentVO
     */
    void newRecruitment(RecruitmentDTO recruitmentVO);

    /**
     * 上传附件到招聘计划
     */
    Integer addFileToRecruitmentPlan(Integer planId, MultipartFile file, String newFileName);

    /**
     * 获取招聘公告
     * @return
     */
    List<RecruitmentVO> queryRecruitment();

    /**
     * 修改招聘公告
     *
     * @param planDeptJob
     */
    void updatePlanDeptJob(PlanDeptJob planDeptJob);

    /**
     * 修改其他招聘公告
     * @param planDeptJob
     */
    void updateOtherPlan(PlanDeptJob planDeptJob);

    /**
     * 删除招聘公告
     *
     * @param planId
     */
    void deletePlanDeptJob(Integer planId);

    /**
     * 下载文件
     * @param fileId
     * @return
     */
    FileEntity getFile(Long fileId);

    /**
     * 检验部门ID和计划ID
     * @param newPostDTO
     * @return
     */
    String[] verify(NewPostDTO newPostDTO);

    /**
     * 新增部门
     * @param newPostDTO
     */
//    void newPlanDeptJob(NewPostDTO newPostDTO);

    /**
     * 根据所有主键删除岗位表
     * @param planDeptJobList
     */
//    void deletePlanDeptJobByAllPrimaryKey(DeletePositionsRequest planDeptJobList);

    /**
     * 校验岗位表的主键是否存在
     * @param delPositons
     * @return
     */
    String[] verifyPlanDeptJobPrimaryKey(DeletePositionsRequest delPositons);

    /**
     * 新增岗位
     * @param planType
     * @param planId
     * @param alOfEDNDTO
     */
    void addPost(Integer planType, Integer planId, List<ALOfEDNDTO> alOfEDNDTO);

    /**
     * 删除岗位
     * @param deletePositions
     */
    void deletePost(DeletePositions deletePositions);

    /**
     * 校验新增招聘信息的部门和岗位是否存在
     * @param recruitmentDTO
     * @return
     */
    Integer verifyAddCondition(RecruitmentDTO recruitmentDTO);
}
